package com.example.appointment.repository;

import com.example.appointment.entity.ActivityRegistration;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 活动报名数据访问接口
 */
@Repository
public interface ActivityRegistrationRepository extends JpaRepository<ActivityRegistration, Long> {
    
    /**
     * 查找用户的活动报名记录
     */
    List<ActivityRegistration> findByUserId(Long userId);
    
    /**
     * 查找活动的所有报名记录
     */
    List<ActivityRegistration> findByActivityId(Long activityId);
    
    /**
     * 分页查询活动的报名记录
     */
    Page<ActivityRegistration> findByActivityId(Long activityId, Pageable pageable);
    
    /**
     * 查找用户对特定活动的报名记录
     */
    Optional<ActivityRegistration> findByUserIdAndActivityId(Long userId, Long activityId);
    
    /**
     * 统计活动的报名人数
     */
    int countByActivityId(Long activityId);
    
    /**
     * 查找有反馈的活动报名记录
     */
    List<ActivityRegistration> findByActivityIdAndFeedbackIsNotNull(Long activityId);
} 